◆BIND(DNS)

→BIND公式HP

BINDとは、DNSサービスを動作させるサーバープログラムであり
正式名称は「Berkeley Internet Name Domain」です。

DNSとは、すでに説明してありますが、
「ドメイン名」と「IPアドレス」の対応表を管理しているデーターベース
+キャッシュ機能であると簡単に説明しておきます。


「BIND」は、インターネット上のDNSサーバーの実に9割以上が使用しているソフトでもあります。
Windowsサーバーであっても、Windows付属のDNSソフトは使用せずに、
Windows用の「BIND」を使用している管理者は数多くいます。


…しかし、このBINDの設定は実に複雑です。
非常に様々な設定項目があります。

自分でインターネットサーバーを製作するとき、
このBINDの設定が、まず最初にぶつかる壁であるといっても過言ではありません。

そして詳しい説明を始めると、とても終わらないほど奥が深いです(汗)。

一旦設定を終えてしまえば、そんなに頻繁に変えるものでもないのですが、
とにかくその初期設定が大変です。


ここでは、出来る限り分かりやすく、必要な事だけを順番に説明していきたいと思っています。


◆まず押さえておきたい事

リゾルバ
 ドメイン名からIPアドレスへの名前解決を行うプログラムの事です。

DNSリゾルバキャッシュ:
 名前解決したものを、一時的に保管しておく機能です。
 なお、ドメイン名に対応するIPアドレスが見つからなかった場合でも、その情報はキャッシュされます。

この2つの機能を合わせてDNSと呼びます。
 BINDの場合、この機能は「named」というプログラムに統合されていますが、
 これらが別々のプログラムとして存在するDNSソフトも存在します。


・ゾーンファイル
 ある特定のドメイン空間の、ドメイン名とIPアドレスとの対応表を記録してあるものです。
 FreeBSDのディフォルトでは「/etc/namedb」以下に存在します。
 自鯖であれば、「ローカルネットワークのゾーンファイル」「localhostのゾーンファイル」の設定を主にします。
 DynamicDNSによって独自ドメインを持っているのであれば、
 グローバルIPアドレス側の設定はDynamicDNS側でする事が多いです。

・逆引きゾーンファイル
 ゾーンファイルとは逆の、IPアドレスからのドメイン名対応表を記録するファイルです。
 基本的にゾーンファイルと同じだけ必要になります。

ゾーンファイルを、この「逆引きゾーンファイル」と特に区別して使用する場合、
 「正引きゾーンファイル」と言います。



ちなみに、インターネット空間はIPアドレスで動いていると「ドメインとDynamicDNS」にて説明しましたが、
じつはDNSは、このIPアドレスを一種の「ドメイン」として、ドメインと同様に管理してます。
なので逆引きなんてものが存在するわけです。

しかし、ブラウザから直接IPアドレスを指定しても、登録していないのに見えましたよね。
あれれ?…この辺り、「使われたり」「使われなったり…」非常に微妙だったりします。

それでも極力トラブルを回避するために登録しておくに越した事はないので、
逆引きの登録も必須としておきます。


BINDには8と9のバージョンが存在します。
FreeBSD4.8にはBIND8.3.4がディフォルトでインストールされています。

主に9になってセキュリティ面が強化されてますが、
設定する内容はあまり変わらないため、まずBIND8で動作する事を目指します

BIND9を導入するのは、それから後でも充分です(−−;)

◆最初に目指す目標

正常動作です(汗)。

まずは、自分のネットワーク内だけで動作する、いわば「俺様ドメイン空間」を構築します
そしてキャッシュ機能も付けます。
(というかnamedを起動させると、自動的にキャッシュ機能も有効になるようです)

当然、この情報は外部に流すわけにはいけません
ちゃんとローカル内でだけ動作するようにします。

もちろん、ちゃんと普通にインターネット側のドメインも取得できるようにします。


まずはここからです…慌てては事を仕損じます。
一歩一歩段階を踏んで覚えていく事が大切です。

気合入れて頑張りましょう。



◆最初の確認項目

まず、FreeBSDの場合、どこにファイルがあるのかを確認します。

DNSプログラムである「named」は「/usr/sbin/named」にあります。
しかし、パスが通っているので、普通に「named」と指定すれば使えます。
バージョンを確認するには「named -v」と実行します。

namedの設定ファイルは「/etc/namedb」に置かれています。
ここに「named」の設定ファイルである「named.conf」があります。

そして「ゾーンファイル・逆引きゾーンファイル」もここ以下に用意します。


「named」の設定の再読み込み、再起動させるスクリプトがFreeBSDにはついています。
しかし、これはプログラムではないためパスが通りません。

「/usr/sbin/named.reload」「/usr/sbin/named.restart」がそのスクリプトです。



◆namd.confの初期設定

では、早速設定を始めます。

Server# cd /etc/namedb
Server# cp named.conf named.conf.org

まず、最初に「named.conf」のオリジナルは保存します。

named.confに限ったわけでなく、大事な設定ファイルを保存しておく癖は付けておいたほうが良いです。
サーバー管理者を自負しているならば特に。


次に一度、「named.conf」の中身をのぞいて見ましょう

…眩暈がしました(汗)。

オリジナルはすでに保存してあるので、設定する時にうっとおしいだけの、
コメント部分や、IPv6の項目…不要と思われる部分は片っ端から削除してしまってもいいです。
むしろ推奨します。

options {
   directory "/etc/namedb";
};

zone "." {
   type hint;
   file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
   type master;
   file "localhost.rev";
};

/*
zone "domain.com" {
   type slave;
   file "s/domain.com.bak";
   masters {
       192.168.1.1;
   };
};

zone "0.168.192.in-addr.arpa" {
   type slave;
   file "s/0.168.192.in-addr.arpa.bak";
   masters {
       192.168.1.1;
   };
};
*/
ここまで削除したら上出来です。
ここでよくやってしまうのが、設定を閉じている「};」を消してしまう事です。気をつけましょう。

注意して欲しいのは、「/*」〜「*/」で囲まれている領域(この場合下半分)は、
コメントアウト状態になっていて、設定として動作しない、と言う事です。

「typeslave;」となってますが、これは他のDNSサーバーのドメイン情報を保存するための、
いわば「セカンダリネームサーバー」の機能の部分です。つまり不要です。
サックリ削除しましょう。

options {
  directory "/etc/namedb";
};

zone "." {
  type hint;
  file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
  type master;
  file "localhost.rev";
};
この段階で必要なのは、これだけです。


次に「options」の項目にアクセス制御関係の追加をしておきます(これは後でもいいですが…)
options {
  directory "/etc/namedb";
  allow-query { 192.168.1.0/24; 127.0.0.1; };
  allow-transfer { !any ; };
  listen-on { 192.168.1.254; }; //サーバーのローカルIPアドレス
};
ややこしければ「listen-on { 192.168.1.254; };」だけでもいいかも知れません。

「allow-query」にて、自分に登録されたDNS(ゾーン)情報の問い合わせを許可するアドレスを指定しています。
「192.168.1.0/24」というのは「192.168.1.???」ネットマスク「255.255.255.0」のアドレス全てを指定しています。
ここでまずローカルネットワーク側からの問い合わせのみを許可しています。

「allow-transfer」にて、ゾーン転送を許可するホストを指定をしています。
ローカルDNSサーバーにゾーン転送なんて不要なので、
全てを許可する設定である「any」の逆表現「!any」によって、あらゆる場所から不許可にしてあります。

さらに最後に、「listen-on」にて、
このDNSサービスはサーバーの「192.168.1.254」インターフェイス側からの
問い合わせのみ受け付けるようにしています。
これでローカルIPアドレスによる「外部からの成りすまし」にも対応できます。

以上の項目を設定しておけば、dnsは絶対に外部に情報を漏らさないはず…です(汗

DNSというのはインターネットの根底にあたる非常に大事なシステムですので、
不用意に混乱を招くような設定を外部に流さないようにする事は管理者として大切です。


これで準備は完了しました。

zone "." {
  type hint;
  file "named.root";
};
次に、この部分の説明を簡単にしておきます。

ここでは、自分が分からないドメイン名の問い合わせが来た時、
DNS(リゾルバ)が聞きに行くDNSサーバーを指定しています。
一覧は「named.root」に書かれていますので、興味のある方は見て頂いてもいいと思います。
なお、この「named.root」に記載されているのは世界のトップドメインDNSサーバー13台です。


つぎに、まず「localhost」…すなわち自分自身の逆引きゾーンファイルを作成します。
zone "0.0.127.IN-ADDR.ARPA" {
  type master;
  file "localhost.rev";
};
この部分の設定です。
実際のゾーンファイルは「localhost.rev」になります。

実は、これに関して、作成してくれるスクリプトが付いています。
Server# chmod +x make-localhost
Server# ./make-localhost
Server# rm localhost-v6.rev
素直に実行して、作成しましょう。最初に実行権限を付けます。
このとき一緒にIPv6に対応したゾーンファイルも作成してくれるわけですが、不要なので削除します。


ここで、本当は正引きのゾーンファイルもあったほうがいいんですが…
「localhost」に対してその設定は必須ではありません。
(「localhost=127.0.0.1」は聞くまでもなく決まっている事であり、自分自身の事なので)
先は長いので飛ばします(ぉ)。


BINDのテスト起動:
Server# named -u bind -g bind

これで起動します…したはずです(汗)。

BINDもインターネットサービスの一つであり、こういったものをroot権限で動かすのはよくないので、
きちんと「bind」というユーザー、グループ名で動作するように指定しています。
このユーザーもFreeBSD4.8では初期で用意されています。
ここはめんどくさいけど、セキュリティ重視です。面倒なら略してしまって構いませんが。

文法エラーがあったらエラーメッセージがログに残りますので、
すべて修正して、無事起動するかどうか確認しておきましょう。

この段階では「named.conf」の文法ミスによるエラーがないかどうか、
その確認のための起動と思ってもらっても良いです。


本当にプロセスとして動作しているか確認。
Server# ps -ax|grep named
743 ?? Is 0:00.02 /usr/sbin/named -u bind -g bind ←起動している
399 p0 R+ 0:00.02 grep named ←これは無視

ここで上のようなものが表示されなければ、設定ファイルが間違っている事になりますので、
間違いがないか確認しましょう。よくある間違いは「」や「};」を忘れる事です。


ここで、ちょっと寄り道して、
インターネット側がDHCPで動作しているサーバーで陥りがちな問題に関して説明しておきます。

DHCPでプロバイダからIPアドレスを取ってきているサーバーの場合、
DNSサーバーを運用する時、根本的な問題がおきます。


何かと言えばサーバ自身が使用するネームサーバー情報は「/etc/resolv.conf」にありますが、
ここにはプロバイダから受け取った情報が書き込まれており、DHCPの場合は編集してはいけないからです。

サーバーをDNSサーバとして使用する場合、普通は、まずここに自分のIPアドレスを登録します。
そうしないと、自分のゾーン情報を見れないからです。

しかしそれが出来ないため、サーバー自身はDNSサーバーを持ちつつ、
自分自身はこのDNSサーバーを使用しないと言う、なんか寂しい状態になります。
けれど仕方ありません…。

この場合、サーバー自身が使用できないだけであって、
クライアントPCのネームサーバーをサーバーのIPアドレスで設定しておけば、
ちゃんとサーバーに登録したドメイン情報を見れるので、
クライアントPCによる、ローカルネットワークのローカルドメインによる運用は可能になります。

以上のことを、注意事項として覚えておいて下さい。


では次にローカルドメイン情報(ゾーンファイル)と
ローカルネットワークのIPアドレス情報(逆引き)をDNSに新たに登録します。


◆ローカルネットワークでローカルドメインを設定

では、早速設定を始めます。
サーバーはローカルネットワーク側IPアドレスが「192.168.1.254」
そしてネットマスクが「255.255.255.0」という前提で設定します。
この場合、「192.168.1」までがネットワークアドレスになります。

ロカールドメインにつける名前は俺様ドメインなだけに「oresama」です。
分かりやすさ第一です。苦情は受け付けません(ぇー)

これ以降、違う名前のドメインで運用したい方は、その名前に全て置き換えて下さい。
ただし「実在するドメイン名」は絶対に使用しないで下さい。はい。


「named.conf」に追加する項目
zone "oresama" {        //ローカルドメイン
  type master;
  file "oresama.zone";    //ゾーンファイル名
};
zone "1.168.192.in-addr.arpa" { //ローカルドメイン逆引き
  type master;
  file "oresama.rev";     //逆引きゾーンファイル名
};
逆引き設定の項目で、なんかややこしい名前が付いてますが、これは規定です。
「IPアドレスのネットワークアドレス部を逆に並べたもの.in-addr.arpa」です。
「localhost」の逆引き設定でもありましたね。これが「これは逆引きだ」とBINDに教えている部分です。


次に、実際に使用するゾーンファイルの中身をすべて載せます。
当然このファイルは存在しないので、各自エディタで新しいファイルとして作成してください。
めんどうであるならば「localhost.rev」をコピーして、それを基礎に編集してもいいかも知れません。


「oresama.zone」…正引きゾーンファイル
;oresama.zone
$TTL 86400
@      IN  SOA ns.oresama. root.oresama. (
         200308011 ; Serial
         10800 ; Refresh
         3600 ; Retry
         604800 ; Expire
         86400 ) ; Minimum

      IN   NS   ns.oresama.

ns     IN  A    192.168.1.254

www     IN  CNAME  ns //別名。バーチャルホストで使用
www2    IN  CNAME  ns //上に同じ

ここで注意して欲しいのが、SOAレコードです。数行に渡って書かれてますが、
「@ IN SOA ns.oresama. root.oresama. ( たくさん数字);」
で一つの設定だと言う事を覚えておいて下さい。
いろんな数字が書かれていますが、この段階では、まだ詳しい説明はしません。

最初の「@」はドメイン名で、「named.conf」で書いた「zone "oresama"」の「oresama.」の部分を略してあります。
省略可能な部分は極力省略します。
ただでさえチェックしなければいけない項目は多いですから…(涙)


上から順に簡単に説明しますと、
最初に「SOA」レコードを指定しています。
これは説明すると長くなるので、この段階ではこんなものだと思ってください。

次の「IN NS…」で、「oresama」ドメインの名前を管理しているネームサーバー(NS)が
「ns.oresama.」サーバーであると指定してます。

そして「ns」(実際は「ns.oresama.」ですが、省略可能です)で、Aレコード…すなわちIPアドレスを指定してます。
これだけでまず必要最低限の設定は終了です。

次の「CNAME」では、サーバーに別名を付けています。
必須ではありませんが、このCNAMEはよく使用されるため追加しておきました。
(Apacheのバーチャルホストを使用する場合にも使用されます)
「www」は「www.oresama.」の略。「www2」は「www2.oresama.」の略です。
そして、どれも実体は「ns」…つまり「ns.oresama.」であり、IPアドレスは「ns.oresama.」の「192.168.1.254」です。

説明でドメイン名の最後に付いている「.(ドット)」は間違いでも入力ミスではありません。
ドメイン名を省略せずに指定する場合、ゾーンファイルにおいてこれが正しい設定になります。
(省略した場合、「.(ドット)」は使用しません。そうすると自動補間してくれるからです)

ゾーンファイル(正引き)は以上です。

これでサーバーには「ns.oresama」「www.oresama」「www2.oresama」の
3つの名前が付いたという事を覚えておいて下さい。


「oresama.rev」…逆引きゾーンファイル
;oresama.rev
$TTL 86400
@      IN SOA ns.oresama. root.oresama. (
      200308011 ; Serial
      10800 ; Refresh
      3600 ; Retry
      604800 ; Expire
      86400 ) ; Minimum


      IN   NS    ns.oresama.

254     IN   PTR   ns.oresama.  
//254はサーバーのホストアドレス

ここでは必要最低限の設定しかしてません。
しかし、これでもう立派にローカルネームサーバーとして動作する事が可能になっています。


namedがすでに起動しているのであれば、設定の再読み込みかけます。
FreeBSDでは専用シェルスクリプトがあるので、それを使用します。
Server# /usr/sbin/named.reload
(スクリプトにはパスは通りません。きちんとディレクトリから指定します)

他にも
Server# /usr/sbin/ndc reload
があります。もしくは直接プロセスに「HUP」信号を送る古き良き方法もありますが、お好きな方をどうぞ。


「nslookup」でサーバー側の動作確認
Server# nslookup - 192.168.1.254  ←サーバーのIPアドレス
Default Server: ns.oresama
Address: 192.168.1.254

> ns.oresama
Server: ns.oresama
Address: 192.168.1.254

Name: ns.oresama
Address: 192.168.1.254

> www.oresama
Server: ns.oresama
Address: 192.168.1.254

Name: ns.oresama
Address: 192.168.1.254
Aliases: www.oresama

> www2.oresama
Server: ns.oresama
Address: 192.168.1.254

Name: ns.oresama
Address: 192.168.1.254
Aliases: www.oresama

>exit  ←終了コマンド

DHCPを使用しているために「resolv.conf」をいじくれない方でも、これだけなら使用可能です(−−;)

下線にあたる部分が、実際の入力項目です。
ちゃんとドメイン名からIPアドレスが引けている事を確認して下さい。

「Aliases」はCNAMEで付けた別名の事です。
ちゃんと別名として動作していますね。

「nslookup」起動時にてIPアドレスの代わりに「ns.oresama」を指定すると、
まずドメイン名からIPアドレスを探すのに「resolv.conf」に登録されている外部ネームサーバーに問い合わせ、
そして存在するわけないのでエラーが出ます(はぅ)。

ちなみに、起動時指定しているIPアドレスは「逆引きゾーンアドレス」に登録されていないと駄目です。
IPアドレスなんだからネームサーバーに聞きにいく必要がない気がしますが、
きちんとネームサーバー(この場合自分自身)に聞いてます。



◆クライアント側で動作確認

さっそく、クライアントPCからDNSサーバーが動作しているか確認してみたいと思います。

クライアントPCのネームサーバーは、おそらくプロバイダのIPアドレスになってると思います。

まず、正常に動かなかった時の事を考えて(ぉぃ)、このIPアドレスはメモっておきます。
このIPアドレスは他にも「named.conf」で使用したりしますので、残しておいて下さい。


では、ささっとクライアントのネームサーバーのIPアドレスを
サーバーのIPアドレスに変更して、設定を有効にします。

この状態でブラウザを開いて、普通にインターネットが出来たら、
それはもうネームサーバーが正常に動作している事になります。

もしApacheといったWebサービスを同じサーバーで起動させているのであれば
ゾーンファイルの「CNAME」で登録した内容がちゃんと動作しているかどうかを確認します。

「http://www.oresama」「http://www2.oresama」(自分のゾーンファイルの設定に合わせてください)と入力して、
きちんと開くかどうか(同じページだと思いますが)確認してみてください。

これで開いたのであれば、まさに俺様ドメイン空間が確立されている事になります。


しかし、別にこのローカルドメイン名の確認をするのにブラウザを使う必要はありません。

Windowsのコマンドラインを開いて、pingを実行しても確認可能です。
(Windows2000/XPなら、「ファイル名を指定して実行」を開いて「cmd」と入力すれば起動します)。


そして、その他にも「nslookup」という(上で少し使用しましたが)
DNSの動作を確認するのに非常に便利なプログラムが存在します。
このnslookupというプログラムは、WindowsでもUNIXでも同じ名前で存在しています。

DNSサーバーでエラーがあった場合、このnslookupが使えるかどうかで、
どこにエラーがあったのか、それを特定出来る範囲が大きく変わってきます。

是非「nslookup」を使いこなせるようになりましょう。


◆forwarders…上位DNSへの問い合わせ

この設定は必須ではありませんが、極力推奨したい項目です
オリジナルの「named.conf」にも、この設定は極力するように書かれています。


ドメイン名問い合わせにおいて、
自分のすぐ上位…例えばプロバイダのDNSサーバーが存在するのであれば、
いちいち分からないドメイン名をトップドメインに問い合わせる必要も無い訳です。

しかし、現段階では自分に分からないドメイン名があった場合、
「hint」の設定どおり「named.root」に書かれているトップドメインに問い合わせています。

これは少し頂けません。
なので、自分に分からないドメイン名があった場合、
プロバイダが用意している上位ネームサーバーに問い合わせるように設定しておきたいと思います。


この時、サーバーがDHCPで情報を取ってきているのであれば、
「/etc/resolv.conf」にはプロバイダのネームサーバーのIPアドレスが記録されています。
これを使用するのが効果的でしょう。


……と言う事で、実際に登録してみましょう。

[named.conf]の設定に追加

options {
  directory "/etc/namedb";
     (省略)
  forwarders {255.255.255.255;}; // ←上位DNSサーバを指定

};

「options」の項目に「forwarders」の項目を追加する事で、設定完了です。「;」は忘れないように。
後は「named」への設定再読み込みを行いましょう。

なお、この項目を設定してしまうと「hint」の設定はあまり意味が無くなってしまいますが、
「hint」の項目を残すのはお約束らしいので、絶対に残しておきましょう。


一応クライアントPCから、普通にインターネットが出来るかどうか確認してみましょう。

この「forwarders」自体がきちんと動作しているかどうかの確認は難しいのですが、
この設定後にきちんとインターネットが出来ているのであれば、正常に動作している事になると思います。


◆[etc/rc.conf]に自動起動の登録

では正常に動作している事が確認されたのであれば、
最後に、DNSサービスであるnamedをサーバー起動時に自動起動するよう設定しておきましょう。

[/etc/rc.conf]を開いて、

named_enable="YES"
named_flags="-u bind -g bind"
この2行を追加します。

これだけで作業は完了です。

正常にDNSが動作しているのであれば、サーバーの再起動は実行する必要は無いのですが、
実際に自動起動するのかどうか確認するために再起動してみてもいいでしょう。

これにて、DNS設定の第一段階は完了です。

これでローカルドメインの運用、そしてDNSキャッシュ機能は有効になっているはずです。
自鯖で運用している方であれば、これでもうDNSの設定は完了かも知れませんね。


DHCPを使用してない場合、
「/etc/resolv.conf」にて「nameserver 自分のIPアドレス」を登録してやれば、
これでもう立派なネームサーバーとして動作します。


この段階で、DNSが間違いなく正常に動作しているのであれば
Server# cp -r /etc/namedb /etc/namedb.bak
と実行して設定ファイルを保存するなり、FTPでどこかにバックアップを取るなりしておけば、
後々のためにいいかも知れません。



◆BINDのバージョンアップ…BIND9を導入する

ここからはBIND9へのバージョンアップ方法を説明します。


もっとも簡単な方法である、portsからのインストールを説明します。

まずBINDを停止させます。
Server# /usr/sbin/ndc stop

インストール開始です。
Server# cd /usr/ports/net/bind9
Server# make install
(終了まで待つ)
Server# make clean

まぁ、見て頂いた通りです。
終了したらパスを通して、昔のものをリネーム後バージョンを確認します。
Server# rehash
Server# mv /usr/sbin/named /usr/sbin/named.old
Server# named -v
BIND 9.2.2

準備は完了です。

しかし、これ以降様々な初期準備が必要になります(また…)。

一度、テストに起動してみようとすると…
Server# named -c /etc/namedb/named.conf

(/var/log/messeagesのエラーメッセージ)
(略) named[XX]: starting BIND 9.2.2 -c /etc/namedb/named.conf
(略) named[XX]: none:0: open: /usr/local/etc/rndc.key: filenot found
(略) named[XX]: couldn't add command channel 127.0.0.1#953:file not found
下線部分で、設定ファイルのある場所を指定しています。
BIND9での起動の場合、この指定を忘れないで下さい。

で、なんか叱られてます。起動してはいるのですが。

ちなみにこの段階で起動ユーザー指定の「-u bind」を付けると、起動しません。
グループ指定「-g bind」の「-g」オプションはBIND9では廃止されてしまったようです。

ちなみに、今後は「ndc」でなくて「rndc」を使用します。
「ndc」はBIND8ですので、気をつけてください。

「rndc」と実行すれば、どんなコマンドが使えるか表示されます。一度見てみるのもいいでしょう。


では、まずエラーメッセージを消しましょう…。

・「rndc.key」の作成:

どーでもいいのですが「HMAC-MD5」形式の鍵が必要だそうです。
Server# cd /usr/local/etc/
Server# dnssec-keygen -a HMAC-MD5 -b 512 -r /dev/urandom -n USER bind

これで、「Kbind.+(ナントカ).key」が出来たと思います。
これをコピーしてしまいましょう。

Server# cp Kbind.+(ナントカ).key rndc.key
ここで作成した「rndc.key」をエディタで開きます。

bind. IN KEY 0 2 157 UJ8KCaC10TmsuuJaopv/7GAO/47pirU1E/D11B6lA6rAmlnZ6Ldb8fv1 WGfasImWMXlzQ2qLzmdtahiAgWYVaA==

     

key "key" {
algorithm hmac-md5;
secret "UJ8KCaC10TmsuuJaopv/7GAO/47pirU1E/D11B6lA6rAmlnZ6Ldb8fv1 WGfasImWMXlzQ2qLzmdtahiAgWYVaA==";
};

まず「rndc.key」ファイルから下線の部分を取り除き、設定を上のように付け加えます。
ながーい部分は一行です。画面に入らない都合上途中で切れてますが、一行です。改行しないでください。

これでBINDを「rndc restart」なりで再起動すると、もう「rndc.key」に関して文句を言われなくなったと思います。
この段階では使用しないので、これでいいです(汗

ここで一旦「rndc stop」としてnamedを停止します。


次の問題を修正します。
次は「ユーザーがbindでは起動しない」に関して説明していきます。
Server# named -u bind -c /etc/namedb/named.conf

(/var/log/messeagesのエラーメッセージ)
(略) : couldn't open pid file '/var/run/named.pid':Permission denied
(略) : exiting (due to early fatal error)

重要な部分だけ表示しました。
これは、プロセスIDを保存している「/var/run」にファイルが作成出来ないとエラーが出ています。

「/var/run」はroot権限のプログラムしか使用できません。
だけどnamdはbindユーザー権限で作成しようとしているため、エラーが出て起動できません。

解決法を示します。

まず、bindユーザーでも読み書き可能なディレクトリを作成します。
Server# mkdir /var/run/named
Server# chown bind:bind /var/run/named

次に[/etc/namedb/named.conf]に、pidファイルの保存場所を明示的に指定します

options {
  directory "/etc/namedb";
     (省略)
  pid-file "/var/run/named/named.pid";
};

以上で完了です。
Server# named -u bind -c /etc/namedb/named.conf
Server# ps -ax | grep named
10779 ?? Is 0:00.08 named -u bind -c /etc/namedb/named.conf
10784 p0 RV 0:00.00 grep named (csh)  ←関係ない
と実行して、無事起動しているかどうか確認しましょう。


nslookup等を使用して、正常に起動しているのが確認できたのであれば、
「/etc/rc.conf」に設定を追加して自動起動するようにします。

named_enable="YES"
named_flags="-u bind -g bind"

 ↓

named_enable="YES"
named_program="/usr/local/sbin/named"
named_flags="-u bind -c /etc/namedb/named.conf"

以上でBIND9への移行はひとまず完了です。


様々な機能がBIND9になって追加されました。
機会があれば、それに関しても説明をしてみたいと思ってます。


◆nslookup…DNSの確認

(鋭気製作中



[一つ上に戻る]

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル